In any type of manufacturing or development, identifying problems early in the manufacturing process is beneficial. Identifying a misfit between parts at the computer aided design (CAD) stage, for example, is much more efficient—i.e., less expensive and time consuming—than at the prototype stage. Changing a dimension in a CAD file, for example, is much easier and less expensive than redesigning a part that is already in production. This is especially true of complex modern products that may include electronic, mechanical, and software components, for example, where one component failure can have multiple implications.
The costs of development, however, must be balanced against the cost of issues that arise at various stages of manufacturing. In other words, the profit of a product can be largely, or entirely, consumed by excessive validation, data gathering, and testing processes during development. Thus, while the near total elimination of conflicts can be achieved with enough instrumentation, simulation, validation, etc., the cost of “perfect” development is prohibitive. Thus, the costs of development must be balanced against the costs of potential problems, bearing in mind that, generally, a problem identified later in development is costlier than one identified early in development.
To this end, identifying problems efficiently, and as early in the process as possible, is useful. A software conflict identified at the coding stage, for example, can often be resolved with a few keystrokes. Identifying the same software conflict at a later stage, such as during real-world testing, can increase costs exponentially. This is because, instead of a simple code rewrite, other systems may be implicated that require redesign, retooling, component replacement, and other costly solutions in addition to fixing the code.